{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Getting Started with SHAP-IQ\n",
        "In this tutorial, we explore how to use the shapiq package to uncover and visualize feature interactions in machine learning models using Shapley Interaction Indices (SII), building on the foundation of traditional Shapley values.\n",
        "\n",
        "Shapley values are great for explaining individual feature contributions in AI models but fail to capture feature interactions. Shapley interactions go a step further by separating individual effects from interactions, offering deeper insights—like how longitude and latitude together influence house prices. In this tutorial, we’ll get started with the shapiq package to compute and explore these Shapley interactions for any model."
      ],
      "metadata": {
        "id": "Rt-Eh_tCKx_A"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Installing the dependencies"
      ],
      "metadata": {
        "id": "QB1jRiAGrqAg"
      }
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "collapsed": true,
        "id": "yP0DVqkxwq1T",
        "outputId": "6ace009c-113c-44fa-bc27-72444a34f5b2"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Collecting shapiq\n",
            "  Downloading shapiq-1.3.1-py3-none-any.whl.metadata (30 kB)\n",
            "Collecting overrides\n",
            "  Downloading overrides-7.7.0-py3-none-any.whl.metadata (5.8 kB)\n",
            "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.11/dist-packages (1.6.1)\n",
            "Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (2.2.2)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (from shapiq) (2.0.2)\n",
            "Requirement already satisfied: scipy in /usr/local/lib/python3.11/dist-packages (from shapiq) (1.16.0)\n",
            "Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (from shapiq) (4.67.1)\n",
            "Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from shapiq) (2.32.3)\n",
            "Collecting sparse-transform (from shapiq)\n",
            "  Downloading sparse_transform-0.2.1-py3-none-any.whl.metadata (759 bytes)\n",
            "Collecting galois (from shapiq)\n",
            "  Downloading galois-0.4.6-py3-none-any.whl.metadata (14 kB)\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.11/dist-packages (from shapiq) (3.10.0)\n",
            "Requirement already satisfied: networkx in /usr/local/lib/python3.11/dist-packages (from shapiq) (3.5)\n",
            "Requirement already satisfied: colour in /usr/local/lib/python3.11/dist-packages (from shapiq) (0.1.5)\n",
            "Requirement already satisfied: pillow in /usr/local/lib/python3.11/dist-packages (from shapiq) (11.3.0)\n",
            "Requirement already satisfied: joblib>=1.2.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (1.5.1)\n",
            "Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (3.6.0)\n",
            "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas) (2.9.0.post0)\n",
            "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas) (2025.2)\n",
            "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas) (2025.2)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n",
            "Requirement already satisfied: numba<0.62,>=0.55 in /usr/local/lib/python3.11/dist-packages (from galois->shapiq) (0.60.0)\n",
            "Requirement already satisfied: typing-extensions>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from galois->shapiq) (4.14.1)\n",
            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->shapiq) (1.3.2)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib->shapiq) (0.12.1)\n",
            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib->shapiq) (4.59.0)\n",
            "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->shapiq) (1.4.8)\n",
            "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib->shapiq) (25.0)\n",
            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->shapiq) (3.2.3)\n",
            "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->shapiq) (3.4.2)\n",
            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->shapiq) (3.10)\n",
            "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->shapiq) (2.5.0)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests->shapiq) (2025.7.14)\n",
            "Requirement already satisfied: llvmlite<0.44,>=0.43.0dev0 in /usr/local/lib/python3.11/dist-packages (from numba<0.62,>=0.55->galois->shapiq) (0.43.0)\n",
            "Downloading shapiq-1.3.1-py3-none-any.whl (284 kB)\n",
            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m284.3/284.3 kB\u001b[0m \u001b[31m13.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hDownloading overrides-7.7.0-py3-none-any.whl (17 kB)\n",
            "Downloading galois-0.4.6-py3-none-any.whl (4.2 MB)\n",
            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.2/4.2 MB\u001b[0m \u001b[31m21.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hDownloading sparse_transform-0.2.1-py3-none-any.whl (27 kB)\n",
            "Installing collected packages: overrides, galois, sparse-transform, shapiq\n",
            "Successfully installed galois-0.4.6 overrides-7.7.0 shapiq-1.3.1 sparse-transform-0.2.1\n"
          ]
        }
      ],
      "source": [
        "!pip install shapiq overrides scikit-learn pandas numpy"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Data Loading and Pre-processing\n",
        "In this tutorial, we'll use the Bike Sharing dataset from OpenML. After loading the data, we'll split it into training and testing sets to prepare it for model training and evaluation."
      ],
      "metadata": {
        "id": "Li7o-rstrujF"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import shapiq\n",
        "from sklearn.ensemble import RandomForestRegressor\n",
        "from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n",
        "from sklearn.model_selection import train_test_split\n",
        "import numpy as np\n",
        "\n",
        "# Load data\n",
        "X, y = shapiq.load_bike_sharing(to_numpy=True)\n",
        "\n",
        "# Split into training and testing\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
      ],
      "metadata": {
        "id": "CKpWQAFoCIgF"
      },
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "df = shapiq.load_bike_sharing()\n",
        "df[0].head()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 206
        },
        "id": "_CtI5w6_CSwI",
        "outputId": "77358906-ead3-45f1-e97c-569437b9d2be"
      },
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "       hour    temp  feel_temp  humidity  windspeed  year  month  holiday  \\\n",
              "0 -1.000000 -0.8125  -0.683918  0.600000  -1.300268  -1.0   -1.0      0.0   \n",
              "1 -0.916667 -0.8750  -0.736714  0.566667  -1.300268  -1.0   -1.0      0.0   \n",
              "2 -0.833333 -0.8750  -0.736714  0.566667  -1.300268  -1.0   -1.0      0.0   \n",
              "3 -0.750000 -0.8125  -0.683918  0.400000  -1.300268  -1.0   -1.0      0.0   \n",
              "4 -0.666667 -0.8125  -0.683918  0.400000  -1.300268  -1.0   -1.0      0.0   \n",
              "\n",
              "   weekday  workingday  season  weather  \n",
              "0     0.75        -1.0     1.0      0.0  \n",
              "1     0.75        -1.0     1.0      0.0  \n",
              "2     0.75        -1.0     1.0      0.0  \n",
              "3     0.75        -1.0     1.0      0.0  \n",
              "4     0.75        -1.0     1.0      0.0  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-4ad2c2a4-0c15-49ae-be28-94fc4f8eae5a\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>hour</th>\n",
              "      <th>temp</th>\n",
              "      <th>feel_temp</th>\n",
              "      <th>humidity</th>\n",
              "      <th>windspeed</th>\n",
              "      <th>year</th>\n",
              "      <th>month</th>\n",
              "      <th>holiday</th>\n",
              "      <th>weekday</th>\n",
              "      <th>workingday</th>\n",
              "      <th>season</th>\n",
              "      <th>weather</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>-1.000000</td>\n",
              "      <td>-0.8125</td>\n",
              "      <td>-0.683918</td>\n",
              "      <td>0.600000</td>\n",
              "      <td>-1.300268</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.75</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>-0.916667</td>\n",
              "      <td>-0.8750</td>\n",
              "      <td>-0.736714</td>\n",
              "      <td>0.566667</td>\n",
              "      <td>-1.300268</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.75</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>-0.833333</td>\n",
              "      <td>-0.8750</td>\n",
              "      <td>-0.736714</td>\n",
              "      <td>0.566667</td>\n",
              "      <td>-1.300268</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.75</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>-0.750000</td>\n",
              "      <td>-0.8125</td>\n",
              "      <td>-0.683918</td>\n",
              "      <td>0.400000</td>\n",
              "      <td>-1.300268</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.75</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>-0.666667</td>\n",
              "      <td>-0.8125</td>\n",
              "      <td>-0.683918</td>\n",
              "      <td>0.400000</td>\n",
              "      <td>-1.300268</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.75</td>\n",
              "      <td>-1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-4ad2c2a4-0c15-49ae-be28-94fc4f8eae5a')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-4ad2c2a4-0c15-49ae-be28-94fc4f8eae5a button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-4ad2c2a4-0c15-49ae-be28-94fc4f8eae5a');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-4ce0da9c-b164-4249-b791-7804011e9228\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-4ce0da9c-b164-4249-b791-7804011e9228')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-4ce0da9c-b164-4249-b791-7804011e9228 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "summary": "{\n  \"name\": \"df[0]\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"hour\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.13176156917368248,\n        \"min\": -1.0,\n        \"max\": -0.6666666666666666,\n        \"num_unique_values\": 5,\n        \"samples\": [\n          -0.9166666666666666,\n          -0.6666666666666666,\n          -0.8333333333333334\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"temp\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.03423265984407289,\n        \"min\": -0.8750000000000001,\n        \"max\": -0.8125000000000001,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          -0.8750000000000001,\n          -0.8125000000000001\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"feel_temp\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.028917620264253294,\n        \"min\": -0.736714136853074,\n        \"max\": -0.6839180270927405,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          -0.736714136853074,\n          -0.6839180270927405\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"humidity\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0983192080250176,\n        \"min\": 0.3999999999999999,\n        \"max\": 0.6000000000000001,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          0.6000000000000001,\n          0.5666666666666668\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"windspeed\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": -1.3002680965147455,\n        \"max\": -1.3002680965147455,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          -1.3002680965147455\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"year\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": -1.0,\n        \"max\": -1.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          -1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"month\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": -1.0,\n        \"max\": -1.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          -1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"holiday\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 0.0,\n        \"max\": 0.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"weekday\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 0.75,\n        \"max\": 0.75,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.75\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"workingday\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": -1.0,\n        \"max\": -1.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          -1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"season\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 1.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"weather\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 0.0,\n        \"max\": 0.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 3
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Model Training and Performance Evaluation"
      ],
      "metadata": {
        "id": "LcJIfXtsssv8"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Train model\n",
        "model = RandomForestRegressor()\n",
        "model.fit(X_train, y_train)\n",
        "\n",
        "# Predict\n",
        "y_pred = model.predict(X_test)\n",
        "\n",
        "# Evaluate\n",
        "mae = mean_absolute_error(y_test, y_pred)\n",
        "rmse = np.sqrt(mean_squared_error(y_test, y_pred))\n",
        "r2 = r2_score(y_test, y_pred)\n",
        "\n",
        "print(f\"R² Score: {r2:.4f}\")\n",
        "print(f\"Mean Absolute Error: {mae:.4f}\")\n",
        "print(f\"Root Mean Squared Error: {rmse:.4f}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "1a6thEwdBATY",
        "outputId": "22931231-f62d-4eb4-8ada-ad6faa2c23ab"
      },
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "R² Score: 0.9447\n",
            "Mean Absolute Error: 24.9615\n",
            "Root Mean Squared Error: 41.8623\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Our model gives an R² score of 0.9447"
      ],
      "metadata": {
        "id": "77e_WjLOs7T6"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Setting up an Explainer\n",
        "We set up a TabularExplainer using the shapiq package to compute Shapley interaction values based on the k-SII (k-order Shapley Interaction Index) method. By specifying max_order=4, we allow the explainer to consider interactions of up to 4 features simultaneously, enabling deeper insights into how groups of features collectively impact model predictions."
      ],
      "metadata": {
        "id": "CgsNPk3MtElb"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# set up an explainer with k-SII interaction values up to order 4\n",
        "explainer = shapiq.TabularExplainer(\n",
        "    model=model,\n",
        "    data=X,\n",
        "    index=\"k-SII\",\n",
        "    max_order=4\n",
        ")"
      ],
      "metadata": {
        "id": "DvuOabB_BE6Q"
      },
      "execution_count": 5,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Explaining a Local Instance\n",
        "We select a specific test instance (index 100) to generate local explanations. The code prints the true and predicted values for this instance, followed by a breakdown of its feature values. This helps us understand the exact inputs passed to the model and sets the context for interpreting the Shapley interaction explanations that follow."
      ],
      "metadata": {
        "id": "6mNrw1qCtQWT"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from tqdm.asyncio import tqdm\n",
        "# create explanations for different orders\n",
        "feature_names = list(df[0].columns)  # get the feature names\n",
        "n_features = len(feature_names)\n",
        "\n",
        "# select a local instance to be explained\n",
        "instance_id = 100\n",
        "x_explain = X_test[instance_id]\n",
        "y_true = y_test[instance_id]\n",
        "y_pred = model.predict(x_explain.reshape(1, -1))[0]\n",
        "print(f\"Instance {instance_id}, True Value: {y_true}, Predicted Value: {y_pred}\")\n",
        "for i, feature in enumerate(feature_names):\n",
        "    print(f\"{feature}: {x_explain[i]}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bAUS0OZ6GIj6",
        "outputId": "3a5b6ea0-fbc9-4c6a-e879-904eed3596df"
      },
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Instance 100, True Value: 57.0, Predicted Value: 58.12\n",
            "hour: -0.16666666666666666\n",
            "temp: -0.8750000000000001\n",
            "feel_temp: -0.9996526571726293\n",
            "humidity: -0.8666666666666666\n",
            "windspeed: 0.9008042895442363\n",
            "year: -1.0\n",
            "month: -1.0\n",
            "holiday: 0.0\n",
            "weekday: 0.0\n",
            "workingday: 0.0\n",
            "season: 1.0\n",
            "weather: 0.0\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Analyzing Interaction Values\n",
        "We use the explainer.explain() method to compute Shapley interaction values for a specific data instance (X[100]) with a budget of 256 model evaluations. This returns an InteractionValues object, which captures how individual features and their combinations influence the model's output. The max_order=4 means we consider interactions involving up to 4 features."
      ],
      "metadata": {
        "id": "DcpzQdQitWoL"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "interaction_values = explainer.explain(X[100], budget=256)\n",
        "# analyse interaction values\n",
        "print(interaction_values)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bWzkLdo5H2zL",
        "outputId": "3eacb3aa-5d80-451d-fdca-b1152501a6a8"
      },
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "InteractionValues(\n",
            "    index=k-SII, max_order=4, min_order=0, estimated=True, estimation_budget=256,\n",
            "    n_players=12, baseline_value=190.1859126194499,\n",
            "    Top 10 interactions:\n",
            "        (): 190.1859126194499\n",
            "        (1, 2, 5): 94.3122600778514\n",
            "        (3, 4, 11): 92.47805831924879\n",
            "        (5, 7, 9): 83.39265709860865\n",
            "        (3, 8, 9): 83.01987750249306\n",
            "        (6, 8, 9): 82.66215127038143\n",
            "        (4, 5, 8): 74.53089121884368\n",
            "        (3, 9, 10): 70.46069068753607\n",
            "        (3, 6, 8): 67.59306277206115\n",
            "        (0, 7, 10): 67.27108432398458\n",
            ")\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "* **baseline_value**: This is the model prediction without using any features,essentially the average prediction.\n",
        "\n",
        "* **(i, j, k):** value: These are the interaction effects — they quantify how much the group of features (i, j, k) contributes jointly to the prediction. Larger values indicate more important or synergistic interactions."
      ],
      "metadata": {
        "id": "HZqx4XQhtiAr"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## First-Order Interaction Values\n",
        "To keep things simple, we compute first-order interaction values—i.e., standard Shapley values that capture only individual feature contributions (no interactions).\n",
        "\n",
        "By setting max_order=1 in the TreeExplainer, we're saying:\n",
        "\n",
        "***“Tell me how much each feature individually contributes to the prediction, without considering any interaction effects.”***\n",
        "\n",
        "These values are known as standard Shapley values. For each feature, it estimates the average marginal contribution to the prediction across all possible permutations of feature inclusion.\n"
      ],
      "metadata": {
        "id": "6GLcexBUt1AL"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "feature_names = list(df[0].columns)\n",
        "explainer = shapiq.TreeExplainer(model=model, max_order=1, index=\"SV\")\n",
        "si_order = explainer.explain(x=x_explain)\n",
        "si_order"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "szX9HQjUBJGx",
        "outputId": "b6a1cd9d-807b-41b7-8725-7486711ae7bb"
      },
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "InteractionValues(\n",
              "    index=SV, max_order=1, min_order=0, estimated=False, estimation_budget=None,\n",
              "    n_players=12, baseline_value=190.7174883118752\n",
              ")"
            ]
          },
          "metadata": {},
          "execution_count": 8
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Plotting a Waterfall chart\n",
        "A Waterfall chart visually breaks down a model's prediction into individual feature contributions.\n",
        "It starts from the baseline prediction and adds/subtracts each feature’s Shapley value to reach the final predicted output.\n",
        "\n",
        "In our case, we’ll use the output of TreeExplainer with max_order=1 (i.e., individual contributions only) to visualize the contribution of each feature."
      ],
      "metadata": {
        "id": "5PSHEC2OuG_Q"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "si_order.plot_waterfall(feature_names=feature_names, show=True)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 771
        },
        "id": "LK9cBSexKhoq",
        "outputId": "5d021cdc-4c04-43f8-a979-81fcd7e843af"
      },
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1455x850 with 3 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAABYMAAALyCAYAAACIK8tpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAviFJREFUeJzs3Xl4lOX59vFzliSTPYRAEiCBsEcSiCJ1F3dccKsiP9S+dUWtrUuLreKKG1XbKrZaK1K1dQd3K+51ARUUZQkEwiZrEkL2fTKZef9IDYxZSCDJ/czM93McHGaeuZ+5z0EUuHLPddl8Pp9PAAAAAAAAAICgZjcdAAAAAAAAAADQ8ygGAwAAAAAAAEAIoBgMAAAAAAAAACGAYjAAAAAAAAAAhACKwQAAAAAAAAAQAigGAwAAAAAAAEAIoBgMAAAAAAAAACGAYjAAAAAAAAAAhACKwQAAAAAAAAAQAigGAwAAAAAAAEAIoBgMAAAAAAAAACGAYjDQi7xer+69914NGzZMYWFhGjZsmB588EGNHj1aXq+3y6/3xBNPKD09XQ0NDT2QFgAAAAAAAMHE5vP5fKZDAKHib3/7m6677jr97ne/09ixYxUfH69LL71Uf/rTn3TppZd2+fXq6+s1ZMgQzZw5U9ddd10PJPa3c+dOvfPOO20+d/bZZys5ObnlcUVFhb755hsVFRWpvr5eMTExGj58uMaNGyen09nhPo2NjVqxYoV27dql4uJiNTQ0aOLEiRo1alSrtbt27VJ+fr4KCgpUVVWliIgIJScn69BDD1VCQsIBvV8AAAAAAIBg0nFFBkC3evrpp3XyySfroYcekiQ98sgj8ng8mjZt2n69nsvl0i9/+Uv95S9/0W9+8xvZbLbujNuurKws9evXz+9afHx8y9fV1dV6/fXXFR4erjFjxigiIkJFRUVatmyZdu/erUmTJnX4+vX19fruu+8UExOjxMREFRQUtLt2xYoVKiws1NChQ9W3b1/V1tZq9erVeu2113TOOecoMTHxwN4sAAAAAABAkKAYDPSS+vp6rVixQrNmzWq59vTTT+uss86Sy+Xa79e94IIL9OCDD+q///2vTjjhhO6Iuk8pKSkaOnRou8+vX79ebrdbZ511VksxNjMzUz6fT+vXr1dDQ4MiIiLavT8qKkoXX3yxoqKiVFxcrNdff73dtdnZ2TrhhBPkcDharg0bNkwLFizQ8uXLe+3nBAAAAAAAwOroGQz0gssvv1yRkZFqamrSbbfdJpvNptTUVK1cuVInnXRSq/U7duyQy+XSZZdd5nf9o48+UlhYmG688caWa+PHj1diYqLefPPNHn8fe3O73e32OXa73ZKai7p7i4qKks1mk93e8f96HA5Hq3vbk5KS4lcIlppPKffp00fl5eWdeg0AAAAAAIBQwMlgoBdcdNFFCgsL0z/+8Q/NmTNHiYmJ2rhxo+666y4dcsghrdYPHDhQV1xxhZ588kndeeedGjx4sNauXaspU6botNNO05///Ge/9YcccogWL17cYQav19tSpN2XiIiIDltOfPbZZ2psbJTNZlNKSooOP/xwv7YRAwYM0IoVK/TZZ59p/PjxcrlcKioq0po1azRmzBiFhYV1Ksf+8vl8qqurU58+fXp0HwAAAAAAgEBCMRjoBSeccII+/vhjRUdH69e//rXsdrtuv/12SVJGRkab99xyyy166qmn9MADD+iee+7R5MmTNWTIEL344outTtYOHTpU//73vzvMUFhY2O7wt5+aNm2aYmNjW1232+3KyMhQWlqaXC6XysvLtWLFCr311ls6++yzlZSUJElKS0vToYcequ+//15btmxpuf/ggw/WhAkTOpXhQGzYsEE1NTUaP358j+8FAAAAAAAQKCgGA71k5cqVGjNmTEsht6SkRE6nUzExMW2uHzhwoK688krNnTtX3333nerq6vTZZ58pOjq61do+ffqorq5OtbW17bZX6Nu3r04//fROZY2MjGzzekpKilJSUvyuZWRkaMGCBVq6dKnf68fGxio1NVUZGRlyuVzaunWrvv/+e0VGRiorK6tTOfZHeXm5Fi1apOTkZI0cObLH9gEAAAAAAAg0FIOBXrJixQpNmjSpS/fMmDFDf/vb37Ry5Up98cUXGjhwYJvrfD6fJHXY2iEiIkKDBg3q0v6dER8fryFDhmjz5s3yer2y2+3asGGDPv/8c02dOrWl2J2RkSGfz6elS5dq+PDhBzQ0rz21tbVauHChwsPDddJJJ+2zNzEAAAAAAEAooVIC9ILy8nJt27ZN2dnZLdf69u0rj8ejqqqqdu+77777JEkej0eJiYntrisrK1NUVFS7J3olqampSbW1tZ360d5guPZER0fL6/XK4/FIktasWaOkpKRWp54HDx4sj8ej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dfX62WNFOvPZYp3z72Id+fcibS1vzrH5J4XptuysbFKCK3DaRNhstqD+74M92IM9rLEHgg8ng4Pck08+qeuvv1719fXq37+/Dj30UJ199tm6/PLL5XA4dO655/oVe9ty9dVX6+9//7uk5lOrN954o5YuXaraWv9BDjabTV4vAxcOlNfrld3O92kAAABCwYxX1uvVH6LlDYG/lXX2ZHBOapje/H/99OcvKvXolwfWsuGW4+J09WExOu7JIm0u67hAvezXyVq9q1H/75XSA9qzN9ht0i0TYzT9sDjTUQAAAYaewUFu+vTpmjx5sl544QV9+umnWrp0qd59913NmTNH3377bct3fx544AGlpaW1+RoHHXSQpOaTwCeccILq6+t18cUXKycnR/Hx8bLb7frjH/+olStX9tr7Cmbr1q1TZmam6RgAAADoBdcfm6DPi5u0q9obEH2De8PZBzX3+X1jTV2bz7ucNg2Mc6i0zquyuvYPowzp49BFOVH6aEO9XyE4MdKu0p/c94uDo5QU7dBnmwKjX7D04+k+isEAgK6hGBwCBgwYoBkzZmjGjBnyer365S9/qeeee07z5s3T8OHDJUnJycmaNm1ah68zf/58lZWV6b777tPMmTP9nrvrrrt6Kn7I4eMYAAAAoSPc5tXdJ8frqtfLTEfpMb85IkaSNCKp+a+fP8+K1IRB4ZKkv37lX3y126TJoyP13Q53S4uHn8pJDdPLFybp4UVVemTxno9Hf3R5P/1nXb12VjYpLd6hiw+OVnm9VzPfL/e7/8tr+uvttfVaV9yoBo9PEwaF68zMSK0uatTzy2sFAEAwoxgcxBobG1VaWqrk5OSWa3a7XePHj9dzzz2n3bt368orr9ScOXN077336uc//7liY2P9XqO4uFjR0dGKioqS09n8y+WnnUWef/555efnt9p/+/bt2rlzpzIyMtSvX78eeIfBKS6O7+4DAACEioKCAk0a119HDw7XV1vdagrC48EzjvX/8+3UsdEtX/+0GHz0kAj1j3Hosa+6fkJ3za5GTcmOVFKUQ2V1Xr2ztk4PL6pSSa3/KeA31tRp/MBwnTbSpQinTTsqmvTEkmr97atq1XsC519ATEzsvhcBAPAT9AwOYkVFRUpLS9ORRx6psWPHKjk5WZs2bdIrr7win8+n5cuXa/jw4br//vt12223qW/fvjrrrLM0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BgAAAAAAAIBqgDAYAAAAAAAAAKoBwmAAAAAAAAAAqAYIgwEAAAAAAACgGiAMBgAAAAAAAIBqgDAYAAAAAAAAAKoBF7MLAAAAAAAAAFA6Dz74oD777DNJUkxMjHbv3m1zPC8vT++8845mzZqlo0ePql69ekpISNCECRP06aefKi4uTk5O9s8PnTZtmt555x0dOHBA7u7uNscmT56sZ5991vr+7NmzCg4OLsPT2S87O1s7d+7UmTNndPbsWWVmZqpLly664YYbCvU9e/astmzZotOnT0uSatWqpfbt2xdZa25urn799VcdOHBAmZmZCgoKUtu2bRUeHl5iPWvXrtX+/fuLPT5kyBB5e3vbVXdpr1kazAwGAAAAAAAAHMCKFStksViKfX3++eeSpODgYM2ZM0fvvfdeoWv861//0quvvqq77rpLn376qaZPn66UlBSNHz9eY8eOLRQEv/HGG3JyctKePXsKXWvEiBFydnbW0qVL9eCDDyorK0vTp08v1K9Pnz6aM2eO7rzzznL6SJReRkaGtm3bpuTkZAUFBRXb79y5c/rmm2906dIltW7dWq1atVJKSoq+/fZbJScnF+q/du1axcbGqlGjRurUqZOcnJz03XffKTExscR6oqOj1a1bN5tX165d5eLiosDAQGtoW9q67blmaTAzGAAAAAAAAHAAO3fulCRNmTJFgYGBhY737t1bq1evlre3t4YOHVrkNWbNmqWePXtq4sSJ1rbJkycrJydHgwcPLtT/iSee0HvvvafJkyfbBL0ffvihZs2apbffflu33367JGn48OF6//33NWrUKFksFmvfJk2aqEmTJoqPj9fixYvL9vBl5OXlpaFDh8rLy0tnz54t9v5btmyRi4uL+vfvLw8PD0lS48aNNX/+fG3evFm9evWy9j1z5owSEhLUvn17tWzZ0tp34cKF2rRpk/r3719sPbVr11bt2rVt2hITE5WTk6NGjRrZXbc91ywNwmAAAAAAAADAAcTGxsrf319PPfWUTdhaWhkZGdq5c6feeOMNm/ZZs2bpjjvusIagV6pVq5aGDBmiOXPm6O9//7uCg4P1448/avTo0Ro4cKDGjRtn7Tto0CBNmDBBa9asUffu3e1/wOvA2dlZXl5eV+2XmJiounXr2nwMvLy8VKdOHR09elTZ2dlydXWVJB08eFAWi0XR0dHWvi4uLrrh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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "In our case, the baseline value (i.e., the model’s expected output without any feature information) is 190.717.\n",
        "\n",
        "As we add the contributions from individual features (order-1 Shapley values), we can observe how each one pushes the prediction up or pulls it down:\n",
        "\n",
        "* Features like Weather and Humidity have a positive contribution, increasing the prediction above the baseline.\n",
        "\n",
        "* Features like Temperature and Year have a strong negative impact, pulling the prediction down by −35.4 and −45, respectively.\n",
        "\n",
        "Overall, the Waterfall chart helps us understand which features are driving the prediction, and in which direction—providing valuable insight into the model’s decision-making."
      ],
      "metadata": {
        "id": "K-Oalt2uuSnN"
      }
    }
  ]
}